use anyhow::Result;
use automation::spider_utils::{crawl_and_save_website, CrawlConfiguration};
use automation::init_logger;
use log::info;
use std::path::Path;

#[tokio::main]
async fn main() -> Result<()> {
    // 初始化日志系统
    init_logger();
    // 示例1: 使用默认配置爬取网站
    info!("示例1: 使用默认配置爬取网站");
    let base_url = "https://cisco.github.io/ChezScheme/csug/";
    let output_dir = Path::new("resources/csug_default");

    let (saved_count, total_count) = crawl_and_save_website(base_url, output_dir, None).await?;
    info!("使用默认配置爬取完成! 保存了 {}/{} 个页面", saved_count, total_count);

    // 示例2: 使用自定义配置爬取网站
    info!("示例2: 使用自定义配置爬取网站");
    let custom_config = CrawlConfiguration {
        respect_robots_txt: false,
        subdomains: true,
        tld: false,
        delay: 200,  // 增加延迟，减轻服务器负担
        depth: 1,    // 限制爬取深度
        page_limit: 5, // 限制爬取页面数量
        timeout: 30,
        user_agent: Some("CustomSpider/1.0".to_string()),
        verbose: true,
        whitelist_url: Some(vec![base_url.to_string()]), // 只爬取base_url下的页面
        blacklist_url: None,
    };

    let output_dir = Path::new("resources/csug_custom");
    let (saved_count, total_count) = crawl_and_save_website(base_url, output_dir, Some(custom_config)).await?;
    info!("使用自定义配置爬取完成! 保存了 {}/{} 个页面", saved_count, total_count);

    Ok(())
}
